package com.zzb.weixin.model.datacube;

import java.util.ArrayList;
import java.util.List;

import com.zzb.weixin.constant.WXJsonName;
import com.zzb.weixin.json.JsonArray;
import com.zzb.weixin.json.JsonObject;

public class DatacubeFactory {
	/**
	 * 获取list列表
	 * @param jo
	 * @return
	 */
	public static JsonArray getList(JsonObject jo) {
		return jo.getAsJsonArray(WXJsonName.LIST);
	}
	/**
	 * 获取用户增减数据
	 * @param jo
	 * @return
	 */
	public static List<UserSummary> parseUserSummary(JsonObject jo){
		JsonArray ja = getList(jo);
		List<UserSummary> list = null;
		if(ja != null && ja.length() > 0){
			list = new ArrayList<UserSummary>();
			for (JsonObject json : ja.getAsJsonObjectList()) {
				list.add(new UserSummary(json));
			}
		}
		return list;
	}
	/**
	 * 获取用户增减数据
	 * @param jo
	 * @return
	 */
	public static List<UserCumulate> parseUserCumulate(JsonObject jo){
		JsonArray ja = getList(jo);
		List<UserCumulate> list = null;
		if(ja != null && ja.length() > 0){
			list = new ArrayList<UserCumulate>();
			for (JsonObject json : ja.getAsJsonObjectList()) {
				list.add(new UserCumulate(json));
			}
		}
		return list;
	}
	/**
	 * 获取图文群发每日数据
	 * @param jo
	 * @return
	 */
	public static List<ArticleSummary> parseArticleSummary(JsonObject jo){
		JsonArray ja = getList(jo);
		List<ArticleSummary> list = null;
		if(ja != null && ja.length() > 0){
			list = new ArrayList<ArticleSummary>();
			for (JsonObject json : ja.getAsJsonObjectList()) {
				list.add(new ArticleSummary(json));
			}
		}
		return list;
	}
	/**
	 * 获取图文群发总数据
	 * @param jo
	 * @return
	 */
	public static List<ArticleTotal> parseArticleTotal(JsonObject jo){
		JsonArray ja = getList(jo);
		List<ArticleTotal> list = null;
		if(ja != null && ja.length() > 0){
			list = new ArrayList<ArticleTotal>();
			for (JsonObject json : ja.getAsJsonObjectList()) {
				list.add(new ArticleTotal(json));
			}
		}
		return list;
	}
	/**
	 * 获取图文统计数据
	 * @param jo
	 * @return
	 */
	public static List<UserRead> parseUserRead(JsonObject jo){
		JsonArray ja = getList(jo);
		List<UserRead> list = null;
		if(ja != null && ja.length() > 0){
			list = new ArrayList<UserRead>();
			for (JsonObject json : ja.getAsJsonObjectList()) {
				list.add(new UserRead(json));
			}
		}
		return list;
	}
	/**
	 * 获取图文统计分时数据
	 * @param jo
	 * @return
	 */
	public static List<UserReadHour> parseUserReadHour(JsonObject jo){
		JsonArray ja = getList(jo);
		List<UserReadHour> list = null;
		if(ja != null && ja.length() > 0){
			list = new ArrayList<UserReadHour>();
			for (JsonObject json : ja.getAsJsonObjectList()) {
				list.add(new UserReadHour(json));
			}
		}
		return list;
	}
	/**
	 * 获取图文分享转发数据
	 * @param jo
	 * @return
	 */
	public static List<UserShare> parseUserShare(JsonObject jo){
		JsonArray ja = getList(jo);
		List<UserShare> list = null;
		if(ja != null && ja.length() > 0){
			list = new ArrayList<UserShare>();
			for (JsonObject json : ja.getAsJsonObjectList()) {
				list.add(new UserShare(json));
			}
		}
		return list;
	}
	/**
	 * 获取图文分享转发分时数据
	 * @param jo
	 * @return
	 */
	public static List<UserShareHour> parseUserShareHour(JsonObject jo){
		JsonArray ja = getList(jo);
		List<UserShareHour> list = null;
		if(ja != null && ja.length() > 0){
			list = new ArrayList<UserShareHour>();
			for (JsonObject json : ja.getAsJsonObjectList()) {
				list.add(new UserShareHour(json));
			}
		}
		return list;
	}
	/**
	 * 获取消息发送概况数据
	 * 获取消息发送概况分周数据
	 * 获取消息发送概况分月数据
	 * @param jo
	 * @return
	 */
	public static List<UpstreamMsg> parseUpstreamMsg(JsonObject jo){
		JsonArray ja = getList(jo);
		List<UpstreamMsg> list = null;
		if(ja != null && ja.length() > 0){
			list = new ArrayList<UpstreamMsg>();
			for (JsonObject json : ja.getAsJsonObjectList()) {
				list.add(new UpstreamMsg(json));
			}
		}
		return list;
	}
	/**
	 * 获取消息发送概况分时数据
	 * @param jo
	 * @return
	 */
	public static List<UpstreamMsgHour> parseUpstreamMsgHour(JsonObject jo){
		JsonArray ja = getList(jo);
		List<UpstreamMsgHour> list = null;
		if(ja != null && ja.length() > 0){
			list = new ArrayList<UpstreamMsgHour>();
			for (JsonObject json : ja.getAsJsonObjectList()) {
				list.add(new UpstreamMsgHour(json));
			}
		}
		return list;
	}
	/**
	 * 获取消息发送分布数据
	 * 获取消息发送分布分周数据
	 * 获取消息发送分布分月数据
	 * @param jo
	 * @return
	 */
	public static List<UpstreamMsgDist> parseUpstreamMsgDist(JsonObject jo){
		JsonArray ja = getList(jo);
		List<UpstreamMsgDist> list = null;
		if(ja != null && ja.length() > 0){
			list = new ArrayList<UpstreamMsgDist>();
			for (JsonObject json : ja.getAsJsonObjectList()) {
				list.add(new UpstreamMsgDist(json));
			}
		}
		return list;
	}
	/**
	 * 获取接口分析数据
	 * @param jo
	 * @return
	 */
	public static List<InterfaceSummary> parseInterfaceSummary(JsonObject jo){
		JsonArray ja = getList(jo);
		List<InterfaceSummary> list = null;
		if(ja != null && ja.length() > 0){
			list = new ArrayList<InterfaceSummary>();
			for (JsonObject json : ja.getAsJsonObjectList()) {
				list.add(new InterfaceSummary(json));
			}
		}
		return list;
	}
	/**
	 * 获取接口分析分时数据
	 * @param jo
	 * @return
	 */
	public static List<InterfaceSummaryHour> parseInterfaceSummaryHour(JsonObject jo){
		JsonArray ja = getList(jo);
		List<InterfaceSummaryHour> list = null;
		if(ja != null && ja.length() > 0){
			list = new ArrayList<InterfaceSummaryHour>();
			for (JsonObject json : ja.getAsJsonObjectList()) {
				list.add(new InterfaceSummaryHour(json));
			}
		}
		return list;
	}
	public static Merchandise parseMerchandise(JsonObject jo){
		return new Merchandise(jo);
	}
}
